/* 
  核心思路：用户访问什么，我们就读取什么文件，如果读取不到，响应404即可
*/
const http = require('http')
const fs = require('fs')
const path = require('path')
const mime = require('mime')

const server = http.createServer()

server.listen(3030, () => {
  console.log('服务器,请访问：http://localhost:3030')
})

server.on('request', (req, res) => {
  // 根据用户的请求
  // let url = decodeURI(req.url)
  // const filePath = path.join(__dirname, url)
  // encodeURI: 对中文转码
  // decodeURI: 解码
  const filePath = path.join(__dirname, req.url)
  if (req.url === '/') {
    // 文件读取不到
    fs.readFile(
      path.join(__dirname, 'index.html'),
      (err, data) => {
        res.end(data)
      }
    )
    return
  }
  fs.readFile(filePath, (err, data) => {
    if (err) {
      // 文件读取不到
      fs.readFile(
        path.join(__dirname, '404.html'),
        'utf8',
        (err, data) => {
          res.statusCode = 404
          res.end(data)
        }
      )
      return
    }
    // 想要正确的处理content-type的类型，需要依赖一个mime的模块
    // mime模块不是node核心的模块，是第三方的模块  需要先下载才能使用
    // 读取成功
    res.setHeader('content-type', mime.getType(req.url))
    res.end(data)
  })
})
